#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>

//int main()
//{
//	int* p = (int*)malloc(10*sizeof(int));
//	int* p1 = (int*)calloc(10, sizeof(int));
//	if (p == NULL)
//	{
//		perror("malloc");
//		return 1;//异常返回
//	}
//	if (p1 == NULL)
//	{
//		perror("malloc");
//		return 1;//异常返回
//	}
//	//使用内存
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		*(p + i) = i + 1;
//	}
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", p[i]);
//	}
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", *(p1 + i));
//	}
//	free(p);//释放内存
//	p = NULL;
//	free(p1);
//	p = NULL;
//	return 0;
//}


//
//int main()
//{
//	int* p = (int*)malloc(10 * sizeof(int));
//	if (p == NULL)
//	{
//		perror("malloc");
//		return 1;//异常返回
//	}
//	//使用内存
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		*(p + i) = i + 1;
//	}
//
//	int* str = (int*)realloc(p, 20 * sizeof(int));
//	if (str == NULL)
//	{
//		perror("malloc");
//		return 1;//异常返回
//	}
//	else
//	{
//		p = str;
//		str = NULL;
//	}
//	for (i = 10; i < 20; i++)
//	{
//		*(p + i) = i + 1;
//	}
//
//	for (i = 0; i < 20; i++)
//	{
//		printf("%d ", p[i]);
//	}
//
//	free(p);//释放内存
//	p = NULL;
//	return 0;
//}



//使用malloc函数模拟开辟一个3*5的整型二维数组，开辟好后，使用二维数组的下标访问形式，访问空间。
int main()
{
	int** p = (int**)malloc(3 * sizeof(int*));
	int i = 0;
	int j = 0;
	for (i = 0; i < 3;i++)
	{
		p[i] = (int*)malloc(5 * sizeof(int));
	}
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 5; j++)
		{
			p[i][j] = 5 * i + j;
		}
	}
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 5; j++)
		{
			printf("%d ", p[i][j]);
		}
	}
	printf("\n");
	for (i = 0; i < 3; i++)
	{
		free(p[i]);
	}
	free(p);
	p = NULL;
	return 0;
}
